跳到主要内容

模拟赛题解/2025.8.21 模拟赛

· 阅读需 5 分钟
Sintle
Developer

T1-钢(hoi)

题面

一棵树上有 nn 个点,每个点上初始权值为 11

两人先后选择一个点清除,并使其他所有点上的权值向这个点迁移一次。

当最后一个点被清除后,清除掉最后一个点的人获胜。

问在都选择最优策略的情况下,谁能获胜。

1n2×1051\leq n\leq2\times10^5

题解

可以将清除这一过程转化为树上所有除了所选的点之外的叶子节点被删除。

考虑树上的一条条链,每次变化会使树上的链长度减少 1122,显然直径会最后被删完。

因此只需要考虑直径,将每次操作转化为使链长减少 1122,这就是一道经典的小学奥数题。

T2-蒸(sgs)

题面

有一条长为 nn,由 A,B,CA,B,C 三种字符构成的字符串。

每次操作可以删除任意一个形如 AB,CA,AACB,AAA,CCBAB,CA,AACB,AAA,CCB 之一的子序列。

如果能删除整个序列,就可以获得 pa×qb×rcp^a\times q^b\times r^c 的值,p,q,rp,q,r 给出,a,b,ca,b,c 分别代表字符串中 A,B,CA,B,C 的数量。

给出 nn,求对于所有数量为 1n1\sim n 的起始字符串长度,可以得到的值的和。

题解

对于这样的字符串删除,考虑将其转换为字符串匹配(什么神仙思路)。

观察到对于所有可删除的子序列,BB 都在末尾,将其转化为右括号。

因为存在 CCBCCB,所以我们将 CC 转化为一个左括号,将 BB 转化为两个右括号。

又因为存在 AB,CA,AAAAB,CA,AAA,所以考虑将 AA 转化为两个左括号或者一个右括号,代入 AACBAACB 发现没问题。

又因为若存在两个 AA 将前一个当作左括号,后一个当作右括号一定是没问题的。

于是设 fi,j,0/1f_{i,j,0/1} 表示当前填充到第 ii 位,剩余 jj 个左括号, 目前是否出现过被当成右括号的 AA 的情况下的最大权值和,转移是不难的。

T3-原(gen)

题面

有一个长度为 nn 的序列 aa,可以进行若干次操作,每次操作形如 op,l,rop,l,r,可以将 [al,ar][a_l,a_r] 的所有数改为 ala_lara_r,若 opopLL 则将区间改为 ala_l,若为 RR 则改为 ara_r

如果能将序列更改为给定的序列 bb 则视为获胜,求出是否能获胜,如果能,给出操作方案,要求操作次数不超过 nn

1n3×105,1ai,bi3×1051\leq n\leq3\times10^5,1\leq a_i,b_i\leq3\times10^5

题解

首先,根据操作的性质,我们注意到不可能将形如 abab 的序列转换为 baba,即不能改变数字间的顺序。

因此我们只需要能在 aa 序列中找到一个顺序包含 bb 序列中所有数的子序列则有解。

考虑如何构造方案,可以将 aa 中的子序列和 bb 中对应区间分类考虑,设 aa 中位置为 posipos_ibb 中对应区间为 li,ril_i,r_i

  1. posi<lipos_i<l_i,此时将 [li,ri][l_i,r_i] 一次覆盖完之后必须要让其他数字覆盖 [posi,li1][pos_i,l_i-1] 的区间。
  2. posi>ripos_i>r_i,此时将 [li,ri][l_i,r_i] 一次覆盖完之后必须要让其他数字覆盖 [ri+1,posi][r_i+1,pos_i] 的区间。
  3. liposiril_i\leq pos_i\leq r_i,此时只需要用一次(posi=lipos_i=l_iposi=ripos_i=r_i)或两次(li<posi<ril_i<pos_i<r_i)将 [li,ri][l_i,r_i] 覆盖完即可。

并且,因为 posposli,ril_i,r_i 是单调递增的,因此构成一定是一段前缀属于情况 11,一段后缀属于情况 22,其余部分属于情况 33

因此我们构造情况 11 为按 pospos 递减顺序做,情况 22 为按 pospos 递增顺序做,情况 33 可以随便做。

证明操作次数:我们考虑到,对于 posipos_i 需要做两次的情况当且仅当 li<posi<ril_i<pos_i<r_i,但此时实际上覆盖了长度至少为 33 的区间,而其他情况下都只需要做一次操作,pospos 不会出现重复,所以总的操作次数一定不超过 nn

T4-诡(lom)

题面

有一个长度为 nn 的序列 aa,要将其划分为若干(2\geq2)个区间,每个划分方案的贡献是所有区间的极差之和。

每次操作将选择一段区间并将该区间内所有数增加 xx,并求出每次修改后的最大划分贡献,询问不独立。

1n,q2×105,108ai,x1081\leq n,q\leq2\times10^5,-10^8\leq a_i,x\leq10^8

题解

考虑原序列的差分序列,显然可以发现当取到最大值时需要使一段区间内全部同正或同负。

那么只需要考虑每段差分序列的左右两边是否被选既可。

每次操作相当于两次单点修改,使用小清新线段树即可通过。